Part_1 https://www.youtube.com/watch?v=OR8W7MJGGGo
code: https://gist.github.com/artemonsh/bc4f1bf733e98acccf02e3a831b4f219

Part_2 https://www.youtube.com/watch?v=VeNazWf9CJ4
code: https://gist.github.com/artemonsh/eb9aade33c3b47732c47daf3d11394c0